package com.tjbank.cssys.api;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.tjbank.cssys.dto.PermDTO;
import com.tjbank.cssys.dto.RoleDTO;
import com.tjbank.cssys.dto.UserDTO;
import com.tjbank.cssys.dto.UserDetailsDTO;

/**
 * 用户
 * 
 * Package : com.tansun.magicube.iam.api
 * 
 * @author -- lijiangtao 2020年5月3日 下午4:27:19
 *
 */
public interface UserService {

    /**
     * 新增用户
     * 
     * @param userDTO
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:43:51
     */
    Integer addUser(UserDTO userDTO);

    /**
     * 根据租户Code分页查询用户信息
     * 
     * @param userDTO
     * @param pageable
     * @return
     * @author -- lijiangtao 2020年7月25日 下午11:49:25
     */
    Page<UserDTO> queryUserByTenantCode(UserDTO userDTO, Pageable pageable);

    /**
     * 根据用户ID查询
     * 
     * @param userId
     * @return
     * @author -- lijiangtao 2020年6月19日 下午3:57:52
     */
    UserDetailsDTO queryUserById(String userId);

    /**
     * 根据用户ID查询角色信息集合
     * 
     * @param userId
     * @return
     * @author -- lijiangtao 2020年5月9日 上午9:59:30
     */
    List<RoleDTO> queryRoleListByUserId(String userId);

    /**
     * 删除
     * 
     * @param userId
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:44:10
     */
    Integer deleteUser(String userId);

    /**
     * 更新
     * 
     * @param userDTO
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:44:17
     */
    Integer updateUser(UserDTO userDTO);

    /**
     * 根据userCode获取用户信息
     * 
     * @param tenantCode
     * @param userCode
     * @return
     * @author -- lijiangtao 2020年7月28日 下午4:01:26
     */
    UserDTO getUser(String tenantCode, String userCode);

    /**
     * 用户登录成功
     * 
     * 查询用户权限
     * 
     * @param tenantCode
     * @param userCode
     * @author -- lijiangtao 2020年7月28日 下午3:52:17
     */
    PermDTO queryPermission(String tenantCode, String userCode);

    /**
     * 修改密码
     * 
     * @param userDTO
     * @return
     * @author -- lijiangtao 2020年7月17日 下午1:48:05
     */
    Integer updatePassword(UserDTO userDTO);

    /**
     * 根据机构ID查询用户信息
     * 
     * @param organId
     * @return
     * @author -- lijiangtao 2020年7月14日 下午4:05:02
     */
    List<UserDTO> queryUserByOrganId(String organId);
}
